package com.xinnet.mms.login.dao;

import java.sql.SQLException;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.xinnet.core.dao.BaseDao;
import com.xinnet.core.utils.page.PageView;
import com.xinnet.mms.entity.Dept;
import com.xinnet.mms.entity.Emp;

@Repository
public interface EmpDao extends BaseDao<Emp, Long>{
	/**
	 * 根据登录名称查询员工
	 * @param loginName 登录名
	 * @return Emp
	 */
	public Emp queryEmpByLoginName(String loginName);
	/**
	 * 根据员工部门ID获取员工
	 * @param deptId
	 * @return
	 */
	public Emp getEmpListByDeptId(String deptId);
	
	/**
	 * 根据员工属性查询员工列表
	 * @param emp
	 * @return
	 */
	public List<Emp> getEmpList(Emp emp);
	
	/**
	 * 根据员工属性查询员工列表
	 * @param emp
	 * @return
	 */
	public List<String> getEmpNoList(Emp emp);
	
	/**
	 * 更新员工
	 * @param emp
	 */
	public void updateEmp(Emp emp);
	
	/**
	 * 根据登录名获取员工
	 * @param loginName
	 * @return List<Emp>
	 */
	public List<Emp> getEmpByLoginName(String loginName);
	
	/**
	 * 获取所有List<Emp>
	 * @return PageView<Emp> 
	 */
	public List<Emp> getAllEmpList();
	
	public List<Emp> getEmpListByDeptIdStr(String deptIdStr);
	
	public List<Emp> getEmpListByDeptIdStrOrNoDeptRoleId(String deptIdStr);
	
	public List<Emp> getEmpSetApprovalListByDeptIdStr(String deptIdStr);

	public List<Emp> getEmpListExceptDeptLeader(String deptId);
	/**
	 * 更新Emp 登录账号
	 * @param emp
	 */
	public void updateEmpAccount(Emp emp);
	/**
	 * 更新Emp角色
	 * @param emp
	 */
	public void updateEmpRole(Emp emp);
	
	public void addEmp(Emp emp);
	
	public List<Dept> getDeptByParentId(String deptId);
	
	public List<Emp> getEmpByDeptAndChildDept(String deptId);
	
	public List<Emp> getEmpListForChildDept(String deptId);
	/**
	 * 
	 * 功能描述：根据员工编号获取员工
	 *
	 * @param empno
	 * @return
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月28日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public Emp getEmpbyEmpno(String empno);
	/**
	 * 
	 * 功能描述：根据员工编号删除员工
	 *
	 * @param empno
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月28日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void delEmpByEmpno(String empno);
	
	/**
	 * 模糊查询
	 * @param emp
	 * @return
	 */
	public List<Emp> queryEmpList(Emp emp);
	
	public List<Emp> getEmpListByParam(Emp emp);
	
	public List<Emp> getEmpListByParamOrNoDeptRoleId(Emp emp);
	/**
	 * 
	 *
	 * 功能描述：取得指定产品code对应部门的销售
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年6月23日
	 *
	 */
	public Emp getSpecialEmpByProductCode(String productCode) throws SQLException;
	/**
	 * 
	 *
	 * 功能描述：修改员工剩余推送个数
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年8月6日
	 *
	 */
	public void updateSurplusLimit(Emp emp) throws SQLException;
}
